<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page isELIgnored="false"%>
<%
   /* String swfFilePath=session.getAttribute("swfFilePath").toString();
    System.out.println("展示路径"+swfFilePath);*/
%>
<!DOCTYPE html>
<html>
<head>
    <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/flexpaper/js/swfobject/swfobject.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/flexpaper/js/flexpaper_flash.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/flexpaper/js/flexpaper_flash_debug.js"></script>
    <script type="text/javascript" src="${pageContext.request.contextPath}/resource/plupload/js/plupload.full.min.js"></script>
    <!--  <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="js/flexpaper.js"></script>
    <script type="text/javascript" src="js/flexpaper_handlers.js"></script>-->
    <style type="text/css" media="screen">
        html,body{
            height: 100%;
        }
        body{
            margin: 0;
            padding: 0;
            overflow: auto;
        }
        #flashContent{
            display: none;
        }
    </style>
    <title>在线文档预览</title>
</head>
<body>
<div style="position: absolute; left:50px;top:10px;">
    <div id="container">
        <a id="pickfiles" href="javascript:;">[选择文件]</a>
        <a id="uploadfiles" href="javascript:;">[上传文件]</a>
        <a id="pdfFile" href="javascript:;">[PDF预览]</a>
        <a id="swfFile" href="javascript:;">[SWF预览]</a>
    </div>
    <div id="upload_pross">

    </div>
    <br />
    <pre id="console"></pre>
    <script type="text/javascript">
        // Custom example logic
        var filename;
        var uploader = new plupload.Uploader({
            runtimes : 'html5,flash,silverlight,html4',
            browse_button : 'pickfiles', //触发文件选择对话框的DOM元素，当点击该元素后便后弹出文件选择对话框。该值可以是DOM元素对象本身，也可以是该DOM元素的id
            container: document.getElementById('container'), // ... or DOM Element itself
            url : '${pageContext.request.contextPath}/uploadFile', //服务器端接收和处理上传文件的脚本地址，可以是相对路径(相对于当前调用Plupload的文档)，也可以是绝对路径
            // flash_swf_url : '../js/Moxie.swf',
            // silverlight_xap_url : '../js/Moxie.xap',
            filters : { //可以使用该参数来限制上传文件的类型，大小等，该参数以对象的形式传入
                max_file_size : '10mb',
                mime_types: [ //用来限定上传文件的类型，为一个数组，该数组的每个元素又是一个对象，该对象有title和extensions两个属性，title为该过滤器的名称，extensions为文件扩展名，有多个时用逗号隔开。该属性默认为一个空数组，即不做限制
                    {title : "Image files", extensions : "jpg,gif,png"},
                    {title : "Doc files", extensions : "doc,docx"}
                ]
            },
            //当Plupload初始化完成后触发监听函数参数：(uploader),uploader为当前的plupload实例对象
            init: {
                //当Init事件发生后触发监听函数参数：(uploader)
                PostInit: function() {
                   // document.getElementById('filelist').innerHTML = '';

                    document.getElementById('uploadfiles').onclick = function() {
                        var files = uploader.files;
                        uploader.start();
                       // return false;
                    };
                },
                //当文件添加到上传队列后触发监听函数参数：(uploader,files)
                //uploader为当前的plupload实例对象，files为一个数组，里面的元素为本次添加到上传队列里的文件对象
                FilesAdded: function(up, files) {

                    // plupload.each(files, function(file) {
                    //     document.getElementById('filelist').innerHTML += '<div id="' + file.id + '">' + file.name + ' (' + plupload.formatSize(file.size) + ') <b></b></div>';
                    // });
                    //var swfFile = getSwfUrl(files);
                    var swfFile = null;
                    var formData = new FormData();
                    // files = JSON.parse(files);
                    formData.append("first", 1);
                    $.each(files, function (index,file) {
                        formData.append("file", file);
                    })
                    var url = '';
                    <%--$.ajax({--%>
                        <%--url : '${pageContext.request.contextPath}/getPdf',--%>
                        <%--type : 'POST',--%>
                        <%--async : false,--%>
                       <%--// data : formData,--%>
                        <%--// processData:false,   //  告诉jquery不要处理发送的数据--%>
                        <%--// contentType:false    // 告诉jquery不要设置content-Type请求头--%>
                    <%--}).done(function (data) {--%>
                        <%--blob = new Blob([data], {type : "application/pdf"}); //text/plain application/x-shockwave-flash--%>
                        <%--url = URL.createObjectURL(blob);--%>
                        <%--result = data;--%>
                        <%--$("#show").attr('href', url);--%>
                       <%----%>
                    <%--})--%>

                },
                //会在文件上传过程中不断触发，可以用此事件来显示上传进度监听函数参数：(uploader,file)
                UploadProgress: uploadProgress,
                //当队列中的某一个文件上传完成后触发监听函数参数：(uploader,file,responseObject)
                //uploader为当前的plupload实例对象，file为触发此事件的文件对象，responseObject为服务器返回的信息对象，它有以下3个属性：
                //response：服务器返回的文本
                //responseHeaders：服务器返回的头信息
                //status：服务器返回的http状态码，比如200
                FileUploaded : FileUploaded,
                //当上传队列中所有文件都上传完成后触发监听函数参数：(uploader,files)
                //uploader为当前的plupload实例对象，files为一个数组，里面的元素为本次已完成上传的所有文件对象
                //UploadComplete : uploadComplete,
                //当发生错误时触发监听函数参数：(uploader,errObject)
                Error: function(up, err) {
                    //document.getElementById('console').appendChild(document.createTextNode("\nError #" + err.code + ": " + err.message));
                }
            }
        });
        uploader.init();
        function uploadProgress(up, file) {
            //document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
            var html = '文件[' + file.name + ']已完成[' + file.percent + ']%';
            $('#upload_pross').empty();
            $('#upload_pross').append(html);
        }
        //当队列中的某一个文件上传完成后触发监听函数参数：(uploader,file,responseObject)
        //uploader为当前的plupload实例对象，file为触发此事件的文件对象，responseObject为服务器返回的信息对象，它有以下3个属性：
        //response：服务器返回的文本
        //responseHeaders：服务器返回的头信息
        //status：服务器返回的http状态码，比如200
        function FileUploaded (uploader,file,responseObject) {
            var result = responseObject.response;
            if (result) {
                if (responseObject.status == 200) {
                    result = JSON.parse(result);
                    filename = result.filename;
                    //pdf
                    $("#pdfFile").on('click',function () {
                        window.open("${pageContext.request.contextPath}/getPdf?filename=" + filename);
                    })
                    //swf预览
                    $("#swfFile").on('click',function () {
                        preView(filename);
                    })
                }
            } else {
                alert("swf文件读取失败!");
            }
        }
        //预览
        function preView (filename) {
            var xiSwfUrlStr =  '';
            var swfVersionStr = "9.0.124";
            var flashvars = {
                SwfFile : '${pageContext.request.contextPath}/getSwf?filename=' + filename,
                Scale : 0.6,  //初始缩放比例
                ZoomTransition : "easeOut", ////变焦模式,一般都是'easeOut'
                ZoomTime : 0.5, //变焦速度
                ZoomInterval : 0.1, //变焦间隔
                FitPageOnLoad : true,  //适应加载
                FitWidthOnLoad : true, //适应宽度加载
                PrintEnabled : true,
                FullScreenAsMaxWindow : false,
                ProgressiveLoading : true,
                PrintToolsVisible : true,
                ViewModeToolsVisible : true, //显示模式(单/双页)按钮
                ZoomToolsVisible : true,     //缩放条
                FullScreenVisible : true,
                NavToolsVisible : true,     //页面跳转框
                CursorToolsVisible : true, //焦点按钮
                SearchToolsVisible : true, //搜索框
                localeChain: "zh_CN"    //按钮提示语言
            };
            var params = {};
            params.quality = "high";
            params.bgcolor = "#ffffff";
            params.allowscriptaccess = "sameDomain";
            params.allowfullscreen = "true";
            var attributes = {};
            attributes.id = "FlexPaperViewer";
            attributes.name = "FlexPaperViewer";
            swfobject.embedSWF(
                "${pageContext.request.contextPath}/resource/flexpaper/FlexPaperViewer.swf", //SWF的URL
                "flashContent", //指定包含替换元素的html元素的ID,能用你的flash的内容来替换
                "800", //指定SWF的宽度
                "550",  //指定SWF的高度
                swfVersionStr, //指定SWF 发布所需的flash播放器的版本 (格式 is: "major.minor.release" or "major")
                xiSwfUrlStr, //指定快速安装的路径，激活快速安装. 请注意，快速安装只会触发一次（他第一次被调用），他只被支持在win平台和mac平台的 Flash Player 6.0.65以上的版本，他会要求一个最小的尺寸是  310x137px指定快速安装的路径，激活快速安装. 请注意，快速安装只会触发一次（他第一次被调用），他只被支持在win平台和mac平台的 Flash Player 6.0.65以上的版本，他会要求一个最小的尺寸是  310x137px
                flashvars, //指定需要传递给flash的变量（用键值对）
                params, //指定嵌入对象的参数（用键值对）
                attributes); //指定对象的属性（用键值对）
            swfobject.createCSS("#flashContent", "display:block;text-align:left;");
        }
    </script>
    <a id="viewerPlaceHolder" style="width: 820px;height: 650px;display: block;"></a>
    <script type="text/javascript">
        <!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
        <%--var xiSwfUrlStr = "${expressInstallSwf}";--%>
        function getSwfUrl(files) {
            var formData = new FormData();
            // files = JSON.parse(files);
            formData.append("first", 1);
            $.each(files, function (index,file) {
                formData.append("file", file);
            })
            var url = "";
            var blob = "";
            var result = "";
            $.ajax({
                url : '${pageContext.request.contextPath}/getSwf',
                type : 'POST',
                async : false,
                data : formData,
                processData:false,   //  告诉jquery不要处理发送的数据
                contentType:false    // 告诉jquery不要设置content-Type请求头
            }).done(function (data) {
                blob = new Blob([data], {type : "application/x-shockwave-flash"});
                url = URL.createObjectURL(blob);
                result = data;
            })
            return url;
        }
    </script>
</div>
<div style="text-align: center">
    <div id="flashContent">
        <p>
            要查看此页面，请确保Adobe Flash Player版本
            安装9.0.124或更高版本。
        </p>
        <script type="text/javascript">
            var pageHost = ((document.location.protocol == "https:") ? "https://" :	"http://");
            document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
                + pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
        </script>
    </div>
</div>
</body>
</html>